package xyz.lne.researchgroupmanage.service;

import xyz.lne.researchgroupmanage.controller.request.AddDocumentRequest;
import xyz.lne.researchgroupmanage.controller.response.DocumentResponse;
import xyz.lne.researchgroupmanage.entity.Document;
import com.baomidou.mybatisplus.extension.service.IService;
import xyz.lne.researchgroupmanage.service.dataTransferObject.DocumentDTO;
import xyz.lne.researchgroupmanage.service.dataTransferObject.DocumentSimpleDTO;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author team7
 * @since 2021-01-19
 */
public interface DocumentService extends IService<Document> {
    /**
     * 通过课题id查找文档的简要信息
     * @param researchId
     * @return
     */
    public List<DocumentSimpleDTO> findDocumentSimpleByResearchId(Integer researchId);

    /**
     * 通过文档id查找文档的详细信息
     * @param documentId
     * @return
     */
    public DocumentDTO findDocumentByDocumentId(Integer documentId);

    /**
     * 通过文档名称获得文档的所有版本信息
     * @param documentName
     * @return
     */
    public List<DocumentSimpleDTO> findDocumentByDocumentName(Integer researchId, String documentName);

    /**
     * 通过文档名称获得文档的所有版本信息
     * @param documentName
     * @return
     */
    public DocumentDTO findDocumentByVersion(Integer researchId, String documentName, Integer version);

    /**
     * 增加文档
     * @param researchId
     * @param documentName
     * @param content
     * @param userId
     * @param remark
     * @param fileId
     * @return
     */
    public DocumentDTO addDocument(Integer researchId, String documentName, String content, Integer userId, String remark, Integer fileId, Integer version);

    /**
     * 删除文档
     * @param documentName
     * @return
     */
    public Integer deleteDocument(Integer researchId, String documentName);

    /**
     * 删除文档版本
     * @param researchId
     * @param documentName
     * @param version
     * @return
     */
    public Boolean deleteDocumentversion(Integer researchId, String documentName, Integer version);

    /**
     * 将版本转化为字符串
     * @param version
     * @return
     */
    public String version(Integer version);

    /**
     * 获取课题的最新版本
     * @param researchId
     * @param documentName
     * @return
     */
    public Integer getNewestversion(Integer researchId, String documentName);
}
